// 导入http模块
import http from 'wechat-http'
/**
 * 配置接口基础路径
 */
http.baseURL = 'https://live-api.itheima.net'
// 请求拦截器
http.intercept.request = (options) => {
  // 1.取出token
  const { token } = getApp()
  // 2.定义一个公共的请求头对象(放公共的属性)
  const defaultHeader = {}
  if (token) defaultHeader.Authorization = token
  // 3.把页面中的请求头对象和公共请求对象合并(页面的请求头必须放在最后边)
  options.header = Object.assign(defaultHeader, options.header)
  return options
  options
  console.log(options)
}
/**
 * 配置响应拦截器
 */
http.intercept.response = async ({ statusCode, data, config }) => {
  // 过滤接口返回的数据
  const app = getApp()
  if (statusCode === 401) {
    // 模拟refreshToken和token均失效,判断路径中是否包含refreshToken
    if (config.url.includes('/refreshToken')) {
      // 读取当前历史栈
      const pageStack = getCurrentPages()
      // 取出当前页面路径，登录成功能跳转到该页面
      const currentPage = pageStack[pageStack.length - 1]
      // 取出当前页面路径，登录成功能跳转到该页面
      const redirectURL = currentPage.route
      // 引导用户到登录页面
      return wx.redirectTo({
        url: `/pages/login/index?redirectURL=/${redirectURL}`,
      })
    }
    const res = await wx.http({
      url: '/refreshToken',
      method: 'POST',
      header: {
        Authorization: app.refreshToken,
      },
    })
    // 1.2更新全局和本地的token以及refreshToken
    app.setToken(res.data.token)
    app.setRefreshToken(res.data.refreshToken)
// -----------------------无感请求(把之前的请求再次发送----------------------
return wx.http(Object.assign(config,{header: {
  Authorization: app.token ,
},}))


  }
  return data
}
/**
 * 挂在方法到全局
 */
wx.http = http
/***
 * 模块导出
 */
export default http
